package com.jsoft.jsofted.sys.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.gitee.sunchenbin.mybatis.actable.annotation.Column;
import com.gitee.sunchenbin.mybatis.actable.annotation.Table;
import com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant;
import com.jsoft.jsofted.framework.entity.OfUserEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.LinkedList;

/**
 * 登录日志：记录“谁什么时间登录系统？”
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Table("sys_loginlog")
@TableName("sys_loginlog")
public class LoginLogEntity extends OfUserEntity {

    /**
     * 登录日期：每天只存一条登录日志。
     * 数据格式：yyyy-MM-dd
     * 如果一天登录多次，则将多次的具体时间存入 loginTimes 字段
     */
    @Column
    protected Date loginDate;

    /**
     * 登录时间：一天登录多次，则将每次的登录时间追加到该字段中
     * 数据格式：[yyyy-MM-dd HH:mm:ss, ......]
     */
    @Column(type = MySqlTypeConstant.TEXT)
    @TableField(typeHandler = JacksonTypeHandler.class)
    protected LinkedList loginTimes;

    /**
     * 登录次数：与 loginTimes 数组长度相同
     * 每次登录：次数 + 1
     */
    @Column
    protected int loginCount;

    /**
     * 当天最后一次登录状态：
     * 1-登录成功
     * 0-登录失败
     */
    @Column
    protected String statusCode;

}
